#include "product_manage.h"
#include "ui_product_manage.h"
#include "adminmainwindow.h"
#include "productadd.h"
#include <QtSql>
#include <QSqlDatabase>
#include <QDebug>
#include <QString>
#include <QMessageBox>
#include <QSqlQuery>
#include <QSqlError>
#include <QFileInfo>
#include <QDir>
#include <QCoreApplication>
#include <QSqlQueryModel>
#include <QSqlTableModel>
#include <QLineEdit>
#include <QFont>

product_manage::product_manage(QSqlDatabase db, QWidget *parent) :
    QDialog(parent), m_db(db),
    ui(new Ui::product_manage)
{
    ui->setupUi(this);
    // 初始化显示图片的标签
    //ui->imageLabel->setMinimumSize(200, 200); // 设置最小尺寸，可按需改
}

product_manage::~product_manage()
{
    delete ui;
}

void product_manage::on_pushButtonAdd_clicked()
{
    productAdd *a = new productAdd(m_db,this);

    // 连接添加完成信号 - 使用 Qt 5.3 兼容的信号槽语法
    connect(a, SIGNAL(productAdded()), this, SLOT(tableModelLoadData()));

    // 连接对话框关闭信号
    connect(a, SIGNAL(finished(int)), this, SLOT(deleteLater()));

    a->show();
}

void product_manage::tableModelLoadData()
{
    // 如果已有模型，先清除
    if (QSqlTableModel* oldModel = qobject_cast<QSqlTableModel*>(ui->tableView->model())) {
        oldModel->deleteLater();
    }

    QSqlTableModel* tableQuery = new QSqlTableModel(this, m_db);
    tableQuery->setTable("products");
    tableQuery->setEditStrategy(QSqlTableModel::OnFieldChange);

    // 设置表头
    tableQuery->setHeaderData(0, Qt::Horizontal, tr("ID"));
    tableQuery->setHeaderData(1, Qt::Horizontal, tr("名称"));
    tableQuery->setHeaderData(2, Qt::Horizontal, tr("分类"));
    tableQuery->setHeaderData(3, Qt::Horizontal, tr("价格"));
    tableQuery->setHeaderData(4, Qt::Horizontal, tr("库存"));
    tableQuery->setHeaderData(5, Qt::Horizontal, tr("状态"));
    tableQuery->setHeaderData(6, Qt::Horizontal, tr("图片路径"));

    // 执行查询
    if (!tableQuery->select()) {
        QMessageBox::critical(this, "错误", "无法加载商品数据:\n" + tableQuery->lastError().text());
        delete tableQuery;
        return;
    }

    ui->tableView->setModel(tableQuery);

    // 调整列宽 - 使用 Qt 5.3 支持的 setResizeMode
    ui->tableView->horizontalHeader()->setSectionResizeMode(QHeaderView::Stretch);

    // 隐藏图片路径列
    ui->tableView->setColumnHidden(6, true);

    // 关联表格点击信号 - 使用 Qt 5.3 兼容的信号槽语法
    connect(ui->tableView, SIGNAL(clicked(QModelIndex)), this, SLOT(showProductDetail(QModelIndex)));
}

void product_manage::on_pushButtonLoadData_clicked()
{
    this->tableModelLoadData();
}

void product_manage::on_pushButtonRowdel_clicked()
{
    QModelIndex index = ui->tableView->currentIndex();
    if (!index.isValid()) {
        QMessageBox::information(this, "提示", "请先选择要删除的行");
        return;
    }

    int row = index.row();
    int productId = ui->tableView->model()->data(ui->tableView->model()->index(row, 0)).toInt();

    QMessageBox::StandardButton reply;
    reply = QMessageBox::question(this, "确认删除",
                                 QString("确定要删除商品 ID: %1 吗?").arg(productId),
                                 QMessageBox::Yes | QMessageBox::No);

    if (reply == QMessageBox::Yes) {
        if (QSqlTableModel* model = qobject_cast<QSqlTableModel*>(ui->tableView->model())) {
            if (model->removeRow(row)) {
                if (model->submitAll()) {
                    QMessageBox::information(this, "成功", "商品删除成功");
                    model->select(); // 重新加载数据
                } else {
                    QMessageBox::critical(this, "错误", "删除失败:\n" + model->lastError().text());
                    model->revertAll();
                }
            }
        }
    }
}

void product_manage::on_pushButton_clicked()
{
    QWidget *parentWidget = qobject_cast<QWidget*>(parent());
    if (parentWidget) {
        parentWidget->show();
    } else {
        adminMainWindow *m = new adminMainWindow(m_db);
        m->setAttribute(Qt::WA_DeleteOnClose);
        m->show();
    }
    this->close();
}

//void product_manage::on_pushButtonEdit_clicked()
//{
//    QModelIndex index = ui->tableView->currentIndex();
//    if (!index.isValid()) {
//        QMessageBox::information(this, "提示", "请先选择要修改的商品");
//        return;
//    }

//    int row = index.row();
//    int productId = ui->tableView->model()->data(ui->tableView->model()->index(row, 0)).toInt();
//    QString name = ui->tableView->model()->data(ui->tableView->model()->index(row, 1)).toString();
//    QString category = ui->tableView->model()->data(ui->tableView->model()->index(row, 2)).toString();
//    double price = ui->tableView->model()->data(ui->tableView->model()->index(row, 3)).toDouble();
//    int stock = ui->tableView->model()->data(ui->tableView->model()->index(row, 4)).toInt();
//    QString status = ui->tableView->model()->data(ui->tableView->model()->index(row, 5)).toString();
//    QString imagePath = ui->tableView->model()->data(ui->tableView->model()->index(row, 6)).toString();

//    // 创建并显示修改对话框
//    productAdd *editDialog = new productAdd();
//    editDialog->setWindowTitle("修改商品信息");

//    // 设置当前值到对话框
//    editDialog->setProductData(productId, name, category, price, stock, status, imagePath);

//    // 连接信号 - 使用 Qt 5.3 兼容的语法
//    connect(editDialog, SIGNAL(productUpdated()), this, SLOT(tableModelLoadData()));

//    editDialog->exec();
//}

//void product_manage::showProductDetail(const QModelIndex &index)
//{
//    qDebug() << "showproductdetail:" << index;
//    // 重置所有表单字段
//    clearAllFormFields();

//    if (!index.isValid()) {
//        return;
//    }

//    int row = index.row();
//    // 1. 从表格获取基础数据
//    int productId = ui->tableView->model()->data(ui->tableView->model()->index(row, 0)).toInt();
//    QString name = ui->tableView->model()->data(ui->tableView->model()->index(row, 1)).toString();
//    QString category = ui->tableView->model()->data(ui->tableView->model()->index(row, 2)).toString();
//    double price = ui->tableView->model()->data(ui->tableView->model()->index(row, 3)).toDouble();
//    int stock = ui->tableView->model()->data(ui->tableView->model()->index(row, 4)).toInt();
//    QString status = ui->tableView->model()->data(ui->tableView->model()->index(row, 5)).toString();

//    // 2. 查询数据库获取图片路径
//    if (!m_db.isOpen()) {
//        qDebug() << "数据库连接未打开";
//        return;
//    }

//    QSqlQuery query(m_db);
//    query.prepare("SELECT image_path FROM products WHERE product_id = :id");
//    query.bindValue(":id", productId);
//    QString imagePath = "";

//    // 执行查询
//    if (!query.exec()) {
//        qDebug() << "查询图片路径失败：" << query.lastError().text();
//    } else if (query.next()) {
//        // 查到结果，获取图片路径
//        imagePath = query.value(0).toString();
//    } else {
//        // 没查到图片路径
//        qDebug() << "未找到商品 ID 对应的图片路径：" << productId;
//    }

//    // 3. 更新表单字段
//    ui->lineEditFlower_id->setText(QString::number(productId));
//    ui->lineEditName->setText(name);
//    ui->lineEditCategory->setText(category);
//    ui->doubleSpinBoxPrice->setValue(price);  // 使用setValue而不是setText
//    ui->spinBoxStock->setValue(stock);        // 使用setValue而不是setTexxt

//    // 4. 加载并显示图片
//    if (imagePath.isEmpty()) {
//        displayNoImageMessage();
//    } else {
//        QPixmap pixmap(imagePath);
//        if (!pixmap.isNull()) {
//            pixmap = pixmap.scaled(ui->imageLabel->size(), Qt::KeepAspectRatio, Qt::SmoothTransformation);
//            ui->imageLabel->setPixmap(pixmap);
//        } else {
//            qDebug() << "图片加载失败: " << imagePath;
//            displayNoImageMessage();
//        }
//    }

//    currentImagePath = imagePath;
//}




